package es.masterd.ejercicioFinal;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ListView;
/**
 * Actividad que muestra una lista de lugares con sus datos
 * @author chony
 *
 */
public class ListaLugaresActivity extends ListActivity {
	ArrayList<Lugar> lugares = new ArrayList<Lugar>();
	private Cursor cursor;
	/**
	 * Se llama cuando se crea la vista
	 * Realiza la consulta en la base de datos para obtener todos los lugares guardados
	 * Inicializa la vista y rellena la lista con los datos obtenidos en la consulta
	 * @savedInstanceState Bundle Objeto con datos pasados a la vista
	 */
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listalugares);

		String[] columnas = new String[] { LugaresProvider._ID,
				LugaresProvider.NOMBRE, LugaresProvider.DESCRIPCION,
				LugaresProvider.FOTO, LugaresProvider.LATITUD,
				LugaresProvider.LONGITUD };

		cursor = getContentResolver().query(LugaresProvider.CONTENT_URI,
				columnas, null, null, null);

		cursor.moveToFirst();

		for (int i = 0; i < cursor.getCount(); i++) {
			int id = cursor.getInt(cursor.getColumnIndex(LugaresProvider._ID));
			String nombre = cursor.getString(cursor
					.getColumnIndex(LugaresProvider.NOMBRE));
			String desc = cursor.getString(cursor
					.getColumnIndex(LugaresProvider.DESCRIPCION));
			String foto = cursor.getString(cursor
					.getColumnIndex(LugaresProvider.FOTO));
			Lugar l = new Lugar(id,// ID
					nombre,// NOMBRE
					desc,// DESCRIPCION
					foto);// FOTO
			lugares.add(l);
			cursor.moveToNext();
		}
		LugaresAdapter adapter = new LugaresAdapter(ListaLugaresActivity.this,
				lugares);

		setListAdapter(adapter);
	}
	/**
	 * Recoge el Id del elemento pulsado y llama a la siguiente actividad
	 * @l ListView Lista de lugares
	 * @v View Vista desde la que se ha realizado la llamada
	 * @position int Posicion del elemento en la lista
	 * @id long Id del elemento en la lista
	 */
	protected void onListItemClick(ListView l, View v, int position, long id) {
		Intent intent = new Intent();
		intent.putExtra(LugaresProvider._ID, lugares.get(position).get_id());
		intent.setClass(getApplicationContext(), MostrarLugarActivity.class);
		startActivity(intent);
	}
	/**
	 * Comportamiento de la tecla ATRAS del terminal
	 * @keyCode int Codigo de la tecla pulsada
	 * @event KeyEvent Evento que ha provocado la llamada al metodo
	 */
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			Intent intent = new Intent();
			setResult(RESULT_OK, intent);
			finish();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}